Imports D2Packets

Public Interface IGame
    Sub WriteToLog(ByVal Text As String)

#Region " Old "

    'ReadOnly Property CurrentPlayer() As LocalPlayer
    'ReadOnly Property Players() As Collections.Generic.SortedList(Of UInt32, Player)
    'ReadOnly Property NPCs() As Collections.Generic.SortedList(Of UInt32, NPC)
    'ReadOnly Property Monsters() As Collections.Generic.SortedList(Of UInt32, NPC)
    'Item Events
    'Event OnItemDrop(ByVal Item As Item)
    'Event OnRemoveItemFromGround(ByVal ID As UInt32)
    'Event OnWorldItemAction(ByVal ActionType As ItemActionType, ByVal Item As Item)
    'Event OnOwnedItemAction(ByVal ActionType As ItemActionType, ByVal Item As Item)
    'Interaction
    'Sub Interact(ByVal Type As UnitType, ByVal ID As UInt32)
    'Sub UseInventoryItem(ByVal ID As UInt32)
    'Sub UseBeltItem(ByVal ID As UInt32, ByVal ToMerc As Boolean)
    'Sub UseClosestWP(ByVal Destination As WaypointDestination)
    'Sub PickUpItem(ByVal ID As UInt32)
    'Sub SelectSkill(ByVal Skill As SkillType, ByVal LeftSlot As Boolean)
    'Sub SwitchWeapons()
    'Sub UseLeftSkillOnLocation(ByVal x As UInt16, ByVal y As UInt16)
    'Sub UseRightSkillOnLocation(ByVal x As UInt16, ByVal y As UInt16)
    'Sub UseLeftSkillOnObject(ByVal Type As UnitType, ByVal ID As UInt32, ByVal Shift As Boolean)
    'Sub UseRightSkillOnObject(ByVal Type As UnitType, ByVal ID As UInt32, ByVal Shift As Boolean)
    'Sub BuyItem(ByVal ID As UInt32, Optional ByVal Ex As Modifier = Modifier.Standard)
    'Sub SellItem(ByVal ID As UInt32)
    'Sub ItemToBelt(ByVal ID As UInt32, ByVal Location As BeltLocation)
    'Sub RemoveBeltItem(ByVal ID As UInt32)
    'Sub SwitchBeltItem(ByVal CursorID As UInt32, ByVal TargetID As UInt32)
    'Sub ItemToCube(ByVal ID As UInt32, ByVal CubeID As UInt32)
    'Sub ItemToBuffer(ByVal ID As UInt32, ByVal x As UShort, ByVal y As UShort, ByVal Type As BufferType)
    'Sub DropItem(ByVal ID As UInt32)
    'Sub MercItemToCursor(ByVal Location As MercEquipLocation)
    'Sub CursorItemToMerc()
    'Sub RequestObjectUpdate(ByVal Type As UnitType, ByVal ID As UInt32)
    'Sub AskToResMerc()
    'Sub AskToRepairAll()
    'Sub AskToIdentifyAll()
    'Sub TPScrollToBook(ByVal ScrollID As UInt32)
    'Sub DropGold(ByVal Amount As Integer)
    'Death
    'Event OnSlain(ByVal PlayerName As String)
    'Event OnSlainByPlayer(ByVal PlayerName As String, ByVal SlainByName As String, ByVal SlainByClass As CharacterClass)
    'Event OnSlainByMonster(ByVal PlayerName As String, ByVal Monster As NPCType)
    'Event OnSlainByObject(ByVal PlayerName As String, ByVal ObjectID As GameObjectID)
    'Party Changes
    'Event OnPartyChange(ByVal PlayerID As UInt32, ByVal Relationship As PartyRelationshipType)
    'Player Join/Leave Events
    'Event OnPlayerJoin(ByVal PlayerID As UInt32, ByVal PlayerClass As CharacterClass, ByVal PlayerName As String, ByVal PlayerLevel As UInt16, ByVal PartyID As UInt16)
    'Event OnPlayerLeave(ByVal PlayerClass As CharacterClass, ByVal PlayerName As String, ByVal PlayerLevel As UInt16, ByVal PartyID As UInt16, ByVal Reason As String)
    'Sub [Exit]()
    'Event OnGameStart()
    'NPCs
    'Event OnAssignNPC(ByVal ID As UInt32, ByVal Type As NPCType, ByVal Life As Integer, ByVal x As UInt16, ByVal y As UInt16)
    'Event OnNPCMove(ByVal ID As UInt32, ByVal x As UInt16, ByVal y As UInt16)
    'Event OnNPCMoveToObject(ByVal ID As UInt32, ByVal MovementType As Byte, ByVal currentX As UInt16, ByVal currentY As UInt16, ByVal targetType As UnitType, ByVal targetID As UInt32)
    'Event OnMonsterAttacking(ByVal MonsterID As UInt32, ByVal AttackType As UInt16, ByVal Target As UInt32, ByVal TargetType As UnitType, ByVal x As UInt16, ByVal y As UInt16)
    'Event OnMonsterDeath(ByVal MonsterID As UInt32)
    'World
    'Event OnAssignWorldObject(ByVal UnitID As UInt32, ByVal ObjectID As GameObjectID, ByVal x As UInt16, ByVal y As UInt16, ByVal ObjectState As GameObjectState, ByVal InteractionType As GameInteractiveObjectType, ByVal Destination As AreaLevel)
    'Event OnAssignWarp(ByVal Type As UnitType, ByVal ID As UInt32, ByVal Warp As WarpType, ByVal x As UInt16, ByVal y As UInt16)
    'Reassign Event
    'Event OnReassign(ByVal Type As UnitType, ByVal ID As UInt32, ByVal x As UInt16, ByVal y As UInt16, ByVal Reassign As Boolean)
    'Player Stat Change
    'Event OnLifeManaChange(ByVal x As UInt16, ByVal y As UInt16, ByVal Stamina As UInt16, ByVal Life As UInt16, ByVal Mana As UInt16)
    'Run/Walk Methods
    'Event OnMove(ByVal x As UInt16, ByVal y As UInt16, ByVal Walk As Boolean)
    'Sub Move(ByVal x As UInt16, ByVal y As UInt16, Optional ByVal Walk As Boolean = False)
    'Sub Move(ByVal Type As UnitType, ByVal ID As UInt32, Optional ByVal walk As Boolean = False)
    'Event OnMoved(ByVal x As UInt16, ByVal y As UInt16, ByVal Stamina As UInt16)
    'Event OnAreaChange(ByVal OldArea As AreaLevel, ByVal NewArea As AreaLevel)
    'Event OnActChange(ByVal OldAct As Act, ByVal NewAct As Act)
    'Corpse Pickup
    'Event OnVisibleCorpse(ByVal PlayerID As UInteger, ByVal CorpseID As UInteger)
    'Event OnCorpsePickup()
    'Useful Methods
    'Sub TalkToNPC(ByVal NPC As TownFolk)
    'Sub CancelNPC()
    'Function InTown() As Boolean
    'Sub GoToTown()
    'Sub GoToStash()
    'Sub TPToTown()
    'Sub TalkToRepairNPC()
    'Sub TalkToMercNPC()
    'Sub TalkToHealNPC()
    'Sub TalkToDeckardCain()
    'Sub ResMerc()
    'Sub RepairAll()
    'Sub IdentifyAll()
    'Sub PickupCorpse()
    'Chat Methods
    'Event OnReceiveMessage(ByVal Packet as D2Packets.GameServer.GameMessage)
    'Event OnSendMessage(ByVal Packet as D2Packets.GameClient.SendMessage)

    Sub SendMessage(ByVal Message As String)
    Sub ReceiveMessage(ByVal Name As String, ByVal Message As String)
    Sub ReceiveMessage(ByVal Message As String)

#End Region

#Region " Game Client Events "

    Event OnAddBeltItem(ByVal Packet As D2Packets.GameClient.AddBeltItem, ByRef Flag As Packet.PacketFlag)
    Event OnBuyItem(ByVal Packet As D2Packets.GameClient.BuyItem, ByRef Flag As Packet.PacketFlag)
    Event OnCainIdentifyItems(ByVal Packet As D2Packets.GameClient.CainIdentifyItems, ByRef Flag As Packet.PacketFlag)
    Event OnCastLeftSkill(ByVal Packet As D2Packets.GameClient.CastLeftSkill, ByRef Flag As Packet.PacketFlag)
    Event OnCastLeftSkillOnTarget(ByVal Packet As D2Packets.GameClient.CastLeftSkillOnTarget, ByRef Flag As Packet.PacketFlag)
    Event OnCastLeftSkillOnTargetStopped(ByVal Packet As D2Packets.GameClient.CastLeftSkillOnTargetStopped, ByRef Flag As Packet.PacketFlag)
    Event OnCastRightSkill(ByVal Packet As D2Packets.GameClient.CastRightSkill, ByRef Flag As Packet.PacketFlag)
    Event OnCastRightSkillOnTarget(ByVal Packet As D2Packets.GameClient.CastRightSkillOnTarget, ByRef Flag As Packet.PacketFlag)
    Event OnCastRightSkillOnTargetStopped(ByVal Packet As D2Packets.GameClient.CastRightSkillOnTargetStopped, ByRef Flag As Packet.PacketFlag)
    Event OnChangeMercEquipment(ByVal Packet As D2Packets.GameClient.ChangeMercEquipment, ByRef Flag As Packet.PacketFlag)
    Event OnClickButton(ByVal Packet As D2Packets.GameClient.ClickButton, ByRef Flag As Packet.PacketFlag)
    Event OnCloseQuest(ByVal Packet As D2Packets.GameClient.CloseQuest, ByRef Flag As Packet.PacketFlag)
    Event OnDisplayQuestMessage(ByVal Packet As D2Packets.GameClient.DisplayQuestMessage, ByRef Flag As Packet.PacketFlag)
    Event OnDropGold(ByVal Packet As D2Packets.GameClient.DropGold, ByRef Flag As Packet.PacketFlag)
    Event OnDropItem(ByVal Packet As D2Packets.GameClient.DropItem, ByRef Flag As Packet.PacketFlag)
    Event OnDropItemToContainer(ByVal Packet As D2Packets.GameClient.DropItemToContainer, ByRef Flag As Packet.PacketFlag)
    Event OnEmbedItem(ByVal Packet As D2Packets.GameClient.EmbedItem, ByRef Flag As Packet.PacketFlag)
    Event OnEnterGame(ByVal Packet As D2Packets.GameClient.EnterGame, ByRef Flag As Packet.PacketFlag)
    Event OnEquipItem(ByVal Packet As D2Packets.GameClient.EquipItem, ByRef Flag As Packet.PacketFlag)
    Event OnExitGame(ByVal Packet As D2Packets.GameClient.ExitGame, ByRef Flag As Packet.PacketFlag)
    Event OnGameLogonRequest(ByVal Packet As D2Packets.GameClient.GameLogonRequest, ByRef Flag As Packet.PacketFlag)

    Event OnGoToLocation(ByVal Packet As D2Packets.GameClient.GoToLocation, ByRef Flag As Packet.PacketFlag)
    Event OnGoToTarget(ByVal Packet As D2Packets.GameClient.GoToTarget, ByRef Flag As Packet.PacketFlag)

    Event OnGoToTownFolk(ByVal Packet As D2Packets.GameClient.GoToTownFolk, ByRef Flag As Packet.PacketFlag)
    Event OnHireMercenary(ByVal Packet As D2Packets.GameClient.HireMercenary, ByRef Flag As Packet.PacketFlag)
    Event OnHoverUnit(ByVal Packet As D2Packets.GameClient.HoverUnit, ByRef Flag As Packet.PacketFlag)
    Event OnIdentifyGambleItem(ByVal Packet As D2Packets.GameClient.IdentifyGambleItem, ByRef Flag As Packet.PacketFlag)
    Event OnIdentifyItem(ByVal Packet As D2Packets.GameClient.IdentifyItem, ByRef Flag As Packet.PacketFlag)
    Event OnIncrementAttribute(ByVal Packet As D2Packets.GameClient.IncrementAttribute, ByRef Flag As Packet.PacketFlag)
    Event OnIncrementSkill(ByVal Packet As D2Packets.GameClient.IncrementSkill, ByRef Flag As Packet.PacketFlag)
    Event OnInventoryItemToBelt(ByVal Packet As D2Packets.GameClient.InventoryItemToBelt, ByRef Flag As Packet.PacketFlag)
    Event OnItemToCube(ByVal Packet As D2Packets.GameClient.ItemToCube, ByRef Flag As Packet.PacketFlag)
    Event OnPartyRequest(ByVal Packet As D2Packets.GameClient.PartyRequest, ByRef Flag As Packet.PacketFlag)
    Event OnPickItem(ByVal Packet As D2Packets.GameClient.PickItem, ByRef Flag As Packet.PacketFlag)
    Event OnPickItemFromContainer(ByVal Packet As D2Packets.GameClient.PickItemFromContainer, ByRef Flag As Packet.PacketFlag)
    Event OnPing(ByVal Packet As D2Packets.GameClient.Ping, ByRef Flag As Packet.PacketFlag)
    Event OnRecastLeftSkill(ByVal Packet As D2Packets.GameClient.RecastLeftSkill, ByRef Flag As Packet.PacketFlag)
    Event OnRecastLeftSkillOnTarget(ByVal Packet As D2Packets.GameClient.RecastLeftSkillOnTarget, ByRef Flag As Packet.PacketFlag)
    Event OnRecastLeftSkillOnTargetStopped(ByVal Packet As D2Packets.GameClient.RecastLeftSkillOnTargetStopped, ByRef Flag As Packet.PacketFlag)
    Event OnRecastRightSkill(ByVal Packet As D2Packets.GameClient.RecastRightSkill, ByRef Flag As Packet.PacketFlag)
    Event OnRecastRightSkillOnTarget(ByVal Packet As D2Packets.GameClient.RecastRightSkillOnTarget, ByRef Flag As Packet.PacketFlag)
    Event OnRecastRightSkillOnTargetStopped(ByVal Packet As D2Packets.GameClient.RecastRightSkillOnTargetStopped, ByRef Flag As Packet.PacketFlag)
    Event OnRemoveBeltItem(ByVal Packet As D2Packets.GameClient.RemoveBeltItem, ByRef Flag As Packet.PacketFlag)
    Event OnRequestQuestLog(ByVal Packet As D2Packets.GameClient.RequestQuestLog, ByRef Flag As Packet.PacketFlag)
    Event OnRequestReassign(ByVal Packet As D2Packets.GameClient.RequestReassign, ByRef Flag As Packet.PacketFlag)
    Event OnRespawn(ByVal Packet As D2Packets.GameClient.Respawn, ByRef Flag As Packet.PacketFlag)
    Event OnResurrectMerc(ByVal Packet As D2Packets.GameClient.ResurrectMerc, ByRef Flag As Packet.PacketFlag)
    Event OnRunToLocation(ByVal Packet As D2Packets.GameClient.RunToLocation, ByRef Flag As Packet.PacketFlag)
    Event OnRunToTarget(ByVal Packet As D2Packets.GameClient.RunToTarget, ByRef Flag As Packet.PacketFlag)
    Event OnSelectSkill(ByVal Packet As D2Packets.GameClient.SelectSkill, ByRef Flag As Packet.PacketFlag)
    Event OnSellItem(ByVal Packet As D2Packets.GameClient.SellItem, ByRef Flag As Packet.PacketFlag)
    Event OnSendCharacterSpeech(ByVal Packet As D2Packets.GameClient.SendCharacterSpeech, ByRef Flag As Packet.PacketFlag)
    Event OnSendMessage(ByVal Packet As D2Packets.GameClient.SendMessage, ByRef Flag As Packet.PacketFlag)
    Event OnSendOverheadMessage(ByVal Packet As D2Packets.GameClient.SendOverheadMessage, ByRef Flag As Packet.PacketFlag)
    Event OnSetPlayerRelation(ByVal Packet As D2Packets.GameClient.SetPlayerRelation, ByRef Flag As Packet.PacketFlag)
    Event OnSetSkillHotkey(ByVal Packet As D2Packets.GameClient.SetSkillHotkey, ByRef Flag As Packet.PacketFlag)
    Event OnStackItems(ByVal Packet As D2Packets.GameClient.StackItems, ByRef Flag As Packet.PacketFlag)
    Event OnSwapBeltItem(ByVal Packet As D2Packets.GameClient.SwapBeltItem, ByRef Flag As Packet.PacketFlag)
    Event OnSwapContainerItem(ByVal Packet As D2Packets.GameClient.SwapContainerItem, ByRef Flag As Packet.PacketFlag)
    Event OnSwapEquippedItem(ByVal Packet As D2Packets.GameClient.SwapEquippedItem, ByRef Flag As Packet.PacketFlag)
    Event OnSwitchWeapons(ByVal Packet As D2Packets.GameClient.SwitchWeapons, ByRef Flag As Packet.PacketFlag)
    Event OnTownFolkCancelInteraction(ByVal Packet As D2Packets.GameClient.TownFolkCancelInteraction, ByRef Flag As Packet.PacketFlag)
    Event OnTownFolkInteract(ByVal Packet As D2Packets.GameClient.TownFolkInteract, ByRef Flag As Packet.PacketFlag)
    Event OnTownFolkMenuSelect(ByVal Packet As D2Packets.GameClient.TownFolkMenuSelect, ByRef Flag As Packet.PacketFlag)
    Event OnTownFolkRepair(ByVal Packet As D2Packets.GameClient.TownFolkRepair, ByRef Flag As Packet.PacketFlag)
    Event OnUnequipItem(ByVal Packet As D2Packets.GameClient.UnequipItem, ByRef Flag As Packet.PacketFlag)
    Event OnUnitInteract(ByVal Packet As D2Packets.GameClient.UnitInteract, ByRef Flag As Packet.PacketFlag)
    Event OnUpdatePosition(ByVal Packet As D2Packets.GameClient.UpdatePosition, ByRef Flag As Packet.PacketFlag)
    Event OnUseBeltItem(ByVal Packet As D2Packets.GameClient.UseBeltItem, ByRef Flag As Packet.PacketFlag)
    Event OnUseInventoryItem(ByVal Packet As D2Packets.GameClient.UseInventoryItem, ByRef Flag As Packet.PacketFlag)
    Event OnWalkToLocation(ByVal Packet As D2Packets.GameClient.WalkToLocation, ByRef Flag As Packet.PacketFlag)
    Event OnWalkToTarget(ByVal Packet As D2Packets.GameClient.WalkToTarget, ByRef Flag As Packet.PacketFlag)
    Event OnWardenResponse(ByVal Packet As D2Packets.GameClient.WardenResponse, ByRef Flag As Packet.PacketFlag)
    Event OnWaypointInteract(ByVal Packet As D2Packets.GameClient.WaypointInteract, ByRef Flag As Packet.PacketFlag)

#End Region

#Region " Game Server Events "

    Event OnAboutPlayer(ByVal Packet As D2Packets.GameServer.AboutPlayer, ByRef Flag As Packet.PacketFlag)
    Event OnAcceptTrade(ByVal Packet As D2Packets.GameServer.AcceptTrade, ByRef Flag As Packet.PacketFlag)
    Event OnAddUnit(ByVal Packet As D2Packets.GameServer.AddUnit, ByRef Flag As Packet.PacketFlag)
    Event OnAssignGameObject(ByVal Packet As D2Packets.GameServer.AssignGameObject, ByRef Flag As Packet.PacketFlag)
    Event OnAssignMerc(ByVal Packet As D2Packets.GameServer.AssignMerc, ByRef Flag As Packet.PacketFlag)
    Event OnAssignNPC(ByVal Packet As D2Packets.GameServer.AssignNPC, ByRef Flag As Packet.PacketFlag)
    Event OnAssignPlayer(ByVal Packet As D2Packets.GameServer.AssignPlayer, ByRef Flag As Packet.PacketFlag)
    Event OnAssignPlayerCorpse(ByVal Packet As D2Packets.GameServer.AssignPlayerCorpse, ByRef Flag As Packet.PacketFlag)
    Event OnAssignPlayerToParty(ByVal Packet As D2Packets.GameServer.AssignPlayerToParty, ByRef Flag As Packet.PacketFlag)
    Event OnAssignSkill(ByVal Packet As D2Packets.GameServer.AssignSkill, ByRef Flag As Packet.PacketFlag)
    Event OnAssignSkillHotkey(ByVal Packet As D2Packets.GameServer.AssignSkillHotkey, ByRef Flag As Packet.PacketFlag)
    Event OnAssignWarp(ByVal Packet As D2Packets.GameServer.AssignWarp, ByRef Flag As Packet.PacketFlag)
    Event OnAttributeNotification(ByVal Packet As D2Packets.GameServer.AttributeNotification, ByRef Flag As Packet.PacketFlag)
    Event OnDelayedState(ByVal Packet As D2Packets.GameServer.DelayedState, ByRef Flag As Packet.PacketFlag)
    Event OnEndState(ByVal Packet As D2Packets.GameServer.EndState, ByRef Flag As Packet.PacketFlag)
    Event OnGainExperience(ByVal Packet As D2Packets.GameServer.GainExperience, ByRef Flag As Packet.PacketFlag)
    Event OnGameHandshake(ByVal Packet As D2Packets.GameServer.GameHandshake, ByRef Flag As Packet.PacketFlag)
    Event OnGameLoading(ByVal Packet As D2Packets.GameServer.GameLoading, ByRef Flag As Packet.PacketFlag)
    Event OnGameLogonReceipt(ByVal Packet As D2Packets.GameServer.GameLogonReceipt, ByRef Flag As Packet.PacketFlag)
    Event OnGameLogonSuccess(ByVal Packet As D2Packets.GameServer.GameLogonSuccess, ByRef Flag As Packet.PacketFlag)
    Event OnGameLogoutSuccess(ByVal Packet As D2Packets.GameServer.GameLogoutSuccess, ByRef Flag As Packet.PacketFlag)
    Event OnReceiveMessage(ByVal Packet As D2Packets.GameServer.GameMessage, ByRef Flag As Packet.PacketFlag)
    Event OnGameOver(ByVal Packet As D2Packets.GameServer.GameOver, ByRef Flag As Packet.PacketFlag)
    Event OnGoldTrade(ByVal Packet As D2Packets.GameServer.GoldTrade, ByRef Flag As Packet.PacketFlag)
    Event OnInformationMessage(ByVal Packet As D2Packets.GameServer.InformationMessage, ByRef Flag As Packet.PacketFlag)

    Event OnOwnedItemAction(ByVal Packet As D2Packets.GameServer.OwnedItemAction, ByRef Flag As Packet.PacketFlag)

    Event OnItemTriggerSkill(ByVal Packet As D2Packets.GameServer.ItemTriggerSkill, ByRef Flag As Packet.PacketFlag)
    Event OnLoadAct(ByVal Packet As D2Packets.GameServer.LoadAct, ByRef Flag As Packet.PacketFlag)
    Event OnLoadDone(ByVal Packet As D2Packets.GameServer.LoadDone, ByRef Flag As Packet.PacketFlag)
    Event OnMapAdd(ByVal Packet As D2Packets.GameServer.MapAdd, ByRef Flag As Packet.PacketFlag)
    Event OnMapRemove(ByVal Packet As D2Packets.GameServer.MapRemove, ByRef Flag As Packet.PacketFlag)
    Event OnMercAttributeNotification(ByVal Packet As D2Packets.GameServer.MercAttributeNotification, ByRef Flag As Packet.PacketFlag)
    Event OnMercForHire(ByVal Packet As D2Packets.GameServer.MercForHire, ByRef Flag As Packet.PacketFlag)
    Event OnMercForHireListStart(ByVal Packet As D2Packets.GameServer.MercForHireListStart, ByRef Flag As Packet.PacketFlag)
    Event OnMercGainExperience(ByVal Packet As D2Packets.GameServer.MercGainExperience, ByRef Flag As Packet.PacketFlag)
    Event OnMonsterAttack(ByVal Packet As D2Packets.GameServer.MonsterAttack, ByRef Flag As Packet.PacketFlag)
    Event OnNPCAction(ByVal Packet As D2Packets.GameServer.NPCAction, ByRef Flag As Packet.PacketFlag)
    Event OnNPCGetHit(ByVal Packet As D2Packets.GameServer.NPCGetHit, ByRef Flag As Packet.PacketFlag)
    Event OnNPCHeal(ByVal Packet As D2Packets.GameServer.NPCHeal, ByRef Flag As Packet.PacketFlag)
    Event OnNPCInfo(ByVal Packet As D2Packets.GameServer.NPCInfo, ByRef Flag As Packet.PacketFlag)
    Event OnNPCMove(ByVal Packet As D2Packets.GameServer.NPCMove, ByRef Flag As Packet.PacketFlag)
    Event OnNPCMoveToTarget(ByVal Packet As D2Packets.GameServer.NPCMoveToTarget, ByRef Flag As Packet.PacketFlag)
    Event OnNPCStop(ByVal Packet As D2Packets.GameServer.NPCStop, ByRef Flag As Packet.PacketFlag)
    Event OnNPCWantsInteract(ByVal Packet As D2Packets.GameServer.NPCWantsInteract, ByRef Flag As Packet.PacketFlag)
    Event OnOpenWaypoint(ByVal Packet As D2Packets.GameServer.OpenWaypoint, ByRef Flag As Packet.PacketFlag)
    Event OnPartyMemberPulse(ByVal Packet As D2Packets.GameServer.PartyMemberPulse, ByRef Flag As Packet.PacketFlag)
    Event OnPartyMemberUpdate(ByVal Packet As D2Packets.GameServer.PartyMemberUpdate, ByRef Flag As Packet.PacketFlag)
    Event OnPartyRefresh(ByVal Packet As D2Packets.GameServer.PartyRefresh, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerAttributeNotification(ByVal Packet As D2Packets.GameServer.PlayerAttributeNotification, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerClearCursor(ByVal Packet As D2Packets.GameServer.PlayerClearCursor, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerCorpseVisible(ByVal Packet As D2Packets.GameServer.PlayerCorpseVisible, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerInGame(ByVal Packet As D2Packets.GameServer.PlayerInGame, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerInSight(ByVal Packet As D2Packets.GameServer.PlayerInSight, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerKillCount(ByVal Packet As D2Packets.GameServer.PlayerKillCount, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerLeaveGame(ByVal Packet As D2Packets.GameServer.PlayerLeaveGame, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerLifeManaChange(ByVal Packet As D2Packets.GameServer.PlayerLifeManaChange, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerMove(ByVal Packet As D2Packets.GameServer.PlayerMove, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerMoveToTarget(ByVal Packet As D2Packets.GameServer.PlayerMoveToTarget, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerPartyRelationship(ByVal Packet As D2Packets.GameServer.PlayerPartyRelationship, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerReassign(ByVal Packet As D2Packets.GameServer.PlayerReassign, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerRelationship(ByVal Packet As D2Packets.GameServer.PlayerRelationship, ByRef Flag As Packet.PacketFlag)
    Event OnPlayerStop(ByVal Packet As D2Packets.GameServer.PlayerStop, ByRef Flag As Packet.PacketFlag)
    Event OnPlaySound(ByVal Packet As D2Packets.GameServer.PlaySound, ByRef Flag As Packet.PacketFlag)
    Event OnPong(ByVal Packet As D2Packets.GameServer.Pong, ByRef Flag As Packet.PacketFlag)
    Event OnPortalInfo(ByVal Packet As D2Packets.GameServer.PortalInfo, ByRef Flag As Packet.PacketFlag)
    Event OnPortalOwnership(ByVal Packet As D2Packets.GameServer.PortalOwnership, ByRef Flag As Packet.PacketFlag)
    Event OnQuestItemState(ByVal Packet As D2Packets.GameServer.QuestItemState, ByRef Flag As Packet.PacketFlag)
    Event OnRelator1(ByVal Packet As D2Packets.GameServer.Relator1, ByRef Flag As Packet.PacketFlag)
    Event OnRelator2(ByVal Packet As D2Packets.GameServer.Relator2, ByRef Flag As Packet.PacketFlag)
    Event OnRemoveGroundUnit(ByVal Packet As D2Packets.GameServer.RemoveGroundUnit, ByRef Flag As Packet.PacketFlag)
    Event OnReportKill(ByVal Packet As D2Packets.GameServer.ReportKill, ByRef Flag As Packet.PacketFlag)
    Event OnRequestLogonInfo(ByVal Packet As D2Packets.GameServer.RequestLogonInfo, ByRef Flag As Packet.PacketFlag)
    Event OnSetGameObjectMode(ByVal Packet As D2Packets.GameServer.SetGameObjectMode, ByRef Flag As Packet.PacketFlag)
    Event OnSetItemState(ByVal Packet As D2Packets.GameServer.SetItemState, ByRef Flag As Packet.PacketFlag)
    Event OnSetNPCMode(ByVal Packet As D2Packets.GameServer.SetNPCMode, ByRef Flag As Packet.PacketFlag)
    Event OnSetState(ByVal Packet As D2Packets.GameServer.SetState, ByRef Flag As Packet.PacketFlag)
    Event OnSkillsLog(ByVal Packet As D2Packets.GameServer.SkillsLog, ByRef Flag As Packet.PacketFlag)
    Event OnSmallGoldAdd(ByVal Packet As D2Packets.GameServer.SmallGoldAdd, ByRef Flag As Packet.PacketFlag)
    Event OnSummonAction(ByVal Packet As D2Packets.GameServer.SummonAction, ByRef Flag As Packet.PacketFlag)
    Event OnSwitchWeaponSet(ByVal Packet As D2Packets.GameServer.SwitchWeaponSet, ByRef Flag As Packet.PacketFlag)
    Event OnTransactionComplete(ByVal Packet As D2Packets.GameServer.TransactionComplete, ByRef Flag As Packet.PacketFlag)
    Event OnUnitUseSkill(ByVal Packet As D2Packets.GameServer.UnitUseSkill, ByRef Flag As Packet.PacketFlag)
    Event OnUnitUseSkillOnTarget(ByVal Packet As D2Packets.GameServer.UnitUseSkillOnTarget, ByRef Flag As Packet.PacketFlag)
    Event OnUnloadDone(ByVal Packet As D2Packets.GameServer.UnloadDone, ByRef Flag As Packet.PacketFlag)
    Event OnUpdateGameQuestLog(ByVal Packet As D2Packets.GameServer.UpdateGameQuestLog, ByRef Flag As Packet.PacketFlag)
    Event OnUpdateItemStats(ByVal Packet As D2Packets.GameServer.UpdateItemStats, ByRef Flag As Packet.PacketFlag)
    Event OnUpdateItemUI(ByVal Packet As D2Packets.GameServer.UpdateItemUI, ByRef Flag As Packet.PacketFlag)
    Event OnUpdatePlayerItemSkill(ByVal Packet As D2Packets.GameServer.UpdatePlayerItemSkill, ByRef Flag As Packet.PacketFlag)
    Event OnUpdateQuestInfo(ByVal Packet As D2Packets.GameServer.UpdateQuestInfo, ByRef Flag As Packet.PacketFlag)
    Event OnUpdateQuestLog(ByVal Packet As D2Packets.GameServer.UpdateQuestLog, ByRef Flag As Packet.PacketFlag)
    Event OnUpdateSkill(ByVal Packet As D2Packets.GameServer.UpdateSkill, ByRef Flag As Packet.PacketFlag)
    Event OnUseSpecialItem(ByVal Packet As D2Packets.GameServer.UseSpecialItem, ByRef Flag As Packet.PacketFlag)
    Event OnUseStackableItem(ByVal Packet As D2Packets.GameServer.UseStackableItem, ByRef Flag As Packet.PacketFlag)
    Event OnWalkVerify(ByVal Packet As D2Packets.GameServer.WalkVerify, ByRef Flag As Packet.PacketFlag)
    Event OnWardenCheck(ByVal Packet As D2Packets.GameServer.WardenCheck, ByRef Flag As Packet.PacketFlag)
    Event OnWorldItemAction(ByVal Packet As D2Packets.GameServer.WorldItemAction, ByRef Flag As Packet.PacketFlag)

#End Region

#Region " Packet Methods "

    Sub ReceivePacket(ByRef bytes() As Byte, Optional ByVal Flag As Packet.PacketFlag = Packet.PacketFlag.PacketFlag_Hidden)
    Sub ReceivePacket(ByRef bytes() As Byte, ByVal length As Integer, Optional ByVal Flag As Packet.PacketFlag = Packet.PacketFlag.PacketFlag_Hidden)
    Sub ReceivePacket(ByVal Packet As D2Packets.D2Packet, Optional ByVal Flag As Packet.PacketFlag = Packet.PacketFlag.PacketFlag_Hidden)
    Sub SendPacket(ByRef bytes() As Byte, Optional ByVal Flag As Packet.PacketFlag = Packet.PacketFlag.PacketFlag_Hidden)
    Sub SendPacket(ByRef bytes() As Byte, ByVal length As Integer, Optional ByVal Flag As Packet.PacketFlag = Packet.PacketFlag.PacketFlag_Hidden)
    Sub SendPacket(ByVal Packet As D2Packets.D2Packet, Optional ByVal Flag As Packet.PacketFlag = Packet.PacketFlag.PacketFlag_Hidden)

    Event OnReceivePacket(ByRef Packet As Packet)
    Event OnSendPacket(ByRef Packet As Packet)

#End Region

    'Hot Keys
    'Sub RegisterHotKey(ByVal Key As System.Windows.Forms.Keys, ByVal Modifiers As HotKey.HotKeyModifiers)
    'Event OnHotKey(ByVal Key As System.Windows.Forms.Keys, ByVal Modifiers As HotKey.HotKeyModifiers)

End Interface